关于常用的stft_spec计算方法与librosa库中的stft函数的区别:

计算stft_spec时,定义的window_length一般是指数据加hanning窗的长度,也会默认为一帧中数据的长度,毕竟数据跟窗长度是要相等的。

我们会先对数据按window_length和hop_length进行分帧,再按照定义的nfft长度进行补零,最后对每帧进行FFT,最后得到stft_spec。

而在librosa库中,定义的window_length仅仅是指hanning窗的长度,当window_length~=nfft时,会对窗进行两侧补零,让窗系数居中(真是醉了)

另外,数据分帧时的帧长度是nfft,在分帧之前,对数据也有几种补零方案,center=True时,默认pad_mode=‘reflect’,这时候会在数据两端按照镜面反射的方式补充nfft/2个数据,当然你也可以选择pad_mode=‘constant’,这时候原数据两端补充nfft/2个0,而center=False时,数据不会被补充(这是恼羞成怒了)。值得注意的是,对数据进行分帧时,如果最后一段数据长度不够一帧,那这段数据就会被丢弃,满满的bug。

所以librosa的期望输入是window_length=nfft,center可以调,frame是bug,pad_mode也反人类,只要一段数据两端没接上,谱泄露是必然的,整个reflect并不能真正减少谱估计误差。补0反而精度会高点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值